セキュリティグループが変更されたらCloudWatchアラームで通知する
はじめに
CloudWatchアラームで特定のセキュリティグループで変更操作があった時にアラートを飛ばす設定で、 フィルタパターンについてお客様よりご質問がありましたので試してみました。
前提としてCloudTrailを有効にしてCloudWatch Logsにログを出力している必要があります。
・参考 AWS管理コンソールの不正ログインをCloudTrail と CloudWatch Logsで検知する | Developers.IO
設定方法
フィルタを作成する
CloudWatchコンソールで作業します。 ロググループを選択して「メトリックスフィルタの作成」をクリック。
特定のセキュリティグループのみ変更についてのフィルタパターンを入れ 「メトリックスの割り当て」をクリック。
- 特定のセキュリティグループのみ変更についてのフィルタパターン
{ ($.requestParameters.groupId = "sg-********") && (($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = DeleteSecurityGroup) || ($.eventName = UpdateSecurityGroup)) }
参考フィルタパターン
- セキュリティグループの変更についてのフィルタパターン
{ ($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = CreateSecurityGroup) || ($.eventName = DeleteSecurityGroup) }
- 複数のセキュリティグループの変更についてのフィルタパターン
{ (($.requestParameters.groupId = "********") || ($.requestParameters.groupId = "********")) && (($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = DeleteSecurityGroup) || ($.eventName = UpdateSecurityGroup)) }
メトリックス名を入れ「フィルタの作成」をクリック。
フィルタの作成が完了したらアラームを作成します。
アラームを作成する
変更が1回でも実施されたら通知されるように設定しました。
こちらでアラームの作成は完了です。
※設定したmailアドレスにSNSからsubscriptionのメールがきたら、 「Confirm subscription」をクリックして通知を受け取るようにしてください。
実際に対象のセキュリティグループを更新してしばらくするとアラームを検知してメール通知されます。
まとめ
CloudTrail イベントをCloudWatchアラームで通知する設定はフィルタを作成するのが難しいですね。 下記ユーザーガイドにいくつかパターンがあるので参考になるかと思います。
参考URL Creating CloudWatch Alarms for CloudTrail Events: Examples | AWS CloudTrail User Guide